package ruifight.member.controller.common.fileUtil;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import net.coobird.thumbnailator.Thumbnails;

/**   
*    
* 类描述：   文件流的压缩工具类
* 创建人：浅缘0419   
* 创建时间：2018年11月23日 上午9:45:36         
* 修改备注：   
* @version    
*    
*/
public class ReduceFile {

	private static Logger logger = LoggerFactory.getLogger(ReduceFile.class);
	
	/**     
	* 方法描述：   对文件流压缩（照片）图片尺寸不变，压缩图片文件大小
	* @param file 传来的文件流
	* @param maxSize 压缩到指定最大值kb
	* @param ratio 按照质量值压缩 0 - 1
	* @return 
	* 创建人：浅缘0419   
	* 创建时间：2018年11月23日 上午9:56:55              
	*/
	public static File reduceFileToAssignSize(File file,Integer maxSize,double ratio) {
		File fileStr = null;
		int maxTemp = maxSize*1024;
		InputStream in = null;
		int len;
		try {
			do{
				in = new FileInputStream(file);
				len = in.available();
				if(len>maxTemp) {
					//图片尺寸不变，压缩图片文件大小outputQuality实现,参数1为最高质量
					Thumbnails.of(file).scale(ratio).outputQuality(ratio).toFile(file);
				}else{
					break;
				}
			}while(true);
			fileStr = file;
		}catch(Exception e) {
			logger.error(e.getMessage());
			e.printStackTrace();
		}finally{
            try {
                if(in != null){
                	in.close();
                }
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
		return fileStr;
	}
	
	
}
